import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * @JUAN FRANCISCO ARIAS BETANCOURT
 *clse boss es el jefe final se mueve sobre las plataformas disparando fuego
 */
public class Boss extends Enemigos
{
    private boolean dirA=true;//la dirrecion el la que se mueve
    private boolean creafuego;//para savber cuando creo fuego
    private boolean  eliminado;//para saber caundo fue eliminado
    private int tiempo;//para la distancia de los fuegos
    private int dist;//intevalos de los fuegos
    private int vidas;//vida de boss

    public Boss()
    {
        vidas=25;
    }

    public void act() 
    {

        int x,y;
        Fuego fuego;
        fuego=new Fuego(getX(), getY());
        World mundo;
        mundo=super.getWorld();// este metodo nos permite acceder al mundo
        java.util.List listama = mundo.getObjects(Mario.class);
        if(creafuego==false)
        {
            dist=Greenfoot.getRandomNumber(3);
            switch(dist)
            {
                case 1: dist=100;
                break;
                case 2: dist=200;
                break;
                case 3: dist=300;
                break;
            };
            mundo.addObject(fuego, getX()+20, getY()+20);
            creafuego=true;

        }
        if(tiempo>dist)
        {
            creafuego=false;
            tiempo=0;
        }

        tiempo++;

        if(dirA)
        {
            move(-1);
            setImage("bossL.png");
            if(interceptaBloque()||getX()==8)

                dirA=false;

        }

        if(!dirA)//if(Greenfoot.isKeyDown("right"))
        {
            move(1);
            setImage("bossR.png");
            if(interceptaBloque()||getX()==598)

                dirA=true;

        } 
        checavida();
    }

    /****
     * checa si todabia hay plataforma 
     */
    public boolean interceptaBloque()
    {
        Actor a=getOneIntersectingObject(Plataforma.class);
        if(a!=null)
            return false;
        else
            return true;
    }

    /****
     * checa la vida de boss
     */
    void checavida()
    {
        World mundo;
        mundo=super.getWorld();// este metodo nos permite acceder al mundo
        Actor m;
        m = super.getOneIntersectingObject(Martillo.class);
        if(m!=null)//checamartillo(false))
        {

            vidas--;
            Greenfoot.playSound("pop.mp3");
            mundo.removeObject(m);
            if(vidas<0)

                ganas();
        }
    }

    /****
     * cuando vence a boss ganas
     */
    void ganas()
    {
        World mundo;
        mundo=super.getWorld();// este metodo nos permite acceder al mundo
        Mundo  g=(Mundo)getWorld();
        
        

        // imagen=super.getImage();
        mundo=super.getWorld();// este metodo nos permite acceder al mundo
        java.util.List listama = mundo.getObjects(Mario.class);

        if(!listama.isEmpty()){
            Object obj = listama.get(0);
            Actor mario = (Actor)obj;
            Mario ma=(Mario)mario;
            ma.puntosact(g);
        }
        
        mundo.removeObjects(mundo.getObjects(Actor.class) );
        mundo.setBackground("ganas.jpg");
        g.musicstop();
        Greenfoot.playSound("gana.mp3");  

        Atras atras = new Atras(g);
        g.addObject(atras, 502, 100);
        
    }

  
}
